// #include<bits/stdc++.h>
// using namespace std;
// typedef ll=long long;
// const int N=400005;
// int n,cou;
// ll num[N];
// struct tree
// {
//     ll t[N<<2],s[N<<2];int tag[N<<2];
//     void psd(int p)
//     {
//         t[p<<1]+=s[p<<1]*tag[p],t[p<<1|1]+=s[p<<1|1]*tag[p];
//         tag[p<<1]+=tag[p],tag[p<<1|1]+=tag[p];
//         tag[p]=0;
//     }
//     void upd(int p)
//     {
//         t[p]=t[p<<1]+t[p<<1|1];s[p]=s[p<<1]+s[p<<1|1];
//     }
//     void add(int L,int R,int p=1,int l=1,int r=cou)
//     {
//         if(L>R)return;
//         if(L<=l&&r<=R){tag[p]++,t[p]+=s[p];return;}
//         int mid=l+r>>1;psd(p);
//         if(L<=mid)add(L,R,p<<1,l,mid);
//         if(R>mid)add(L,R,p<<1|1,mid+1,r);
//         upd(p);
//     }
//     void ins(int x,ll v,int k,int p=1,int l=1,int r=cou)
//     {
//         if(l==r){s[p]=v,t[p]=v*k;return;}
//         int mid=l+r>>1;psd(p);
//         if(x<=mid)ins(x,v,k,p<<1,l,mid);
//         else ins(x,v,k,p<<1|1,mid+1,r);
//         upd(p);
//     }
//     void del(int x,int p=1,int l=1,int r=cou)
//     {
//         if(l==r){t[p]=s[p]=0;return;}
//         int mid=l+r>>1;psd(p);
//         if(x<=mid)del(x,p<<1,l,mid);
//         else del(x,p<<1|1,mid+1,r);
//         upd(p);
//     }
// }tr[2];
// ll s1,s2,s3,s4;
// set<int>s;
// int rkt[N<<2],x1,x2,x3,x4;
// void cg(int x,int p=1,int l=1,int r=cou)
// {
//     if(l==r){rkt[p]^=1;return;}
//     int mid=l+r>>1;
//     if(x<=mid)cg(x,p<<1,l,mid);
//     else cg(x,p<<1|1,mid+1,r);
//     rkt[p]=rkt[p<<1]+rkt[p<<1|1];
// }
// int qus(int L,int R,int p=1,int l=1,int r=cou)
// {
//     if(L<=l&&r<=R)return rkt[p];
//     int mid=l+r>>1;
//     if(L<=mid&&R>mid)return qus(L,R,p<<1,l,mid)+qus(L,R,p<<1|1,mid+1,r);
//     else if(L<=mid)return qus(L,R,p<<1,l,mid);
//     else return qus(L,R,p<<1|1,mid+1,r);
// }
// int f[N],nx[N],sz;
// void lk(int x,int y)
// {
//     f[y]=x,nx[y]=nx[x];
//     f[nx[x]]=y;nx[x]=y;
// }
// void ins(ll v)
// {
//     int p1=lower_bound(num+1,num+cou+1,v);
//     if(s.size()<=1)
//     {
//         sz++;
//         if(sz==1)lk(0,p1);
//         else 
//         {
//             s2+=v;
//             if(p1<nx[0])lk(0,p1),x1=x2=f[cou+1],s1=num[x1];
//             else lk(nx[0],p1),x1=x2=f[cou],s1[num[x1]];
//         }
//     }
//     else
//     {
//         auto it=s.lower_bound(p1);
//         if(it==s.end()||(*it)!=p1)
//         {
//             sz++;
//             int rk,p2;cg(p1);
//             rk=qus(1,p1);
//             if(it!=s.begin())
//             {
//                 it--;
//                 p2=*it;
//                 s.insert(p1);
//                 lk(p2,p1);
//                 if(p2>=x1&&p2<=x2)
//                 {
//                     return;
//                 }
//                 else
//                 {
//                     if(x1>p2)
//                     {
//                         s2+=v;
//                         tr[0].ins(p2,v,rk-1);
//                         tr[0].add(nx[p2],f[x1]);
//                         if(f[x1]!=p2)tr[0].del(f[x1]),x1=f[x1],s+=num[x1];
//                     }
//                     else
//                     {
//                         s1+=v;
//                         tr[1].ins(p2,v,sz-rk+1);
//                         tr[1].add(nx[x2],f[p2]);
//                         if(nx[x2]!=p2)t1[1].del(nx[x2]),x2=nx[x2],s+=num[x2];
//                     }
//                 }
//             }
//             else 
//             {

//             }
            
            
//         }
//         else
//         {

//         }
//     }
// }
// int main()
// {
//     ios::sync_with_stdio(false);
//     cin.tie(0),cout.tie(0);
    
    
//     nx[0]=cou+1;
//     return 0;
// }
#include<bits/stdc++.h>
using namespace std;
const int N=400005;
int n;
// int ct[N<<2];long long t[N<<2],s1[N<<2],s2[N<<2],tg1[N<<2],tg2[N<<2],num[N],a[N],cou;
// void psd(int p)
// {
//     s1[p<<1]+=1ll*ct[p<<1]*tg1[p],s1[p<<1|1]+=1ll*ct[p<<1|1]*tg1[p];
//     tg1[p<<1]+=tg1[p],tg1[p<<1|1]+=tg1[p];
//     s2[p<<1]+=1ll*ct[p<<1]*tg2[p],s2[p<<1|1]+=1ll*ct[p<<1|1]*tg2[p];
//     tg2[p<<1]+=tg2[p],tg2[p<<1|1]+=tg2[p];
// }
// void upd(int p)
// {
//     ct[p]=ct[p<<1]+ct[p<<1|1];
//     t[p]=t[p<<1]+t[p<<1|1];
//     s1[p]=s1[p<<1]+s1[p<<1|1];
//     s2[p]=s2[p<<1]+s2[p<<1|1];
// }
// void add(int L,int R,long long v,int p=1,int l=1,int r=cou)
// {
//     if(L>R)return;
//     if(L<=l&&r<=R){tg1[p]+=v,s1[p]+=v*ct[p];return;}
//     int mid=l+r>>1;psd(p);
//     if(L<=mid)add(L,R,v,p<<1,l,mid);
//     if(R>mid)add(L,R,v,p<<1|1,mid+1,r);
//     upd(p);
// }
// void add2(int L,int R,long long v,int p=1,int l=1,int r=cou)
// {
//     if(L>R)return;
//     if(L<=l&&r<=R){tg2[p]+=v,s2[p]+=v*ct[p];return;}
//     int mid=l+r>>1;psd(p);
//     if(L<=mid)add2(L,R,v,p<<1,l,mid);
//     if(R>mid)add2(L,R,v,p<<1|1,mid+1,r);
//     upd(p);
// }
// void cg(int x,long long k1,long long k2,int p=1,int l=1,int r=cou)
// {
//     if(l==r){ct[p]^=1;t[p]=num[l]*ct[p];s1[p]=k1+num[l],s2[p]=k2=num[l];if(ct[p])add(x+1,cou,num[l]),add2(1,x-1,num[l]);else add(x+1,cou,-num[l]),add2(1,x-1,-num[l]);return;}
//     int mid=l+r>>1;psd(p);
//     if(x<=mid)cg(x,k1,k2+t[p<<1|1],p<<1,l,mid);
//     else cg(x,k1+t[p<<1],k2,p<<1|1,mid+1,r);
//     upd(p);
// }

// long long qus(int k,int p=1,int l=1,int r=cou)
// {
//     if(k==ct[p])return t[p];
//     int mid=l+r>>1;psd(p);
//     if(k>ct[p<<1])return t[p<<1]+qus(k-ct[p<<1],p<<1|1,mid+1,r);
//     else if(k==ct[p<<1])return t[p<<1];
//     else return qus(k,p<<1,l,mid);
// }
// long long qus1(int k,int p=1,int l=1,int r=cou)
// {
//     if(k==ct[p])return t[p];
//     int mid=l+r>>1;psd(p);
//     if(k>ct[p<<1|])return t[p<<1|]+qus(k-ct[p<<1|],p<<1,l,mid);
//     else if(k==ct[p<<1|])return t[p<<1|];
//     else return qus(k,p<<1|1,mid+1,r);
// }
// long long solve()
// {
//     if(ct[1]==1)return 0;
//     long long res=0;
//     int l1=1,r1=ct[1]-1;
//     while(l<r)
//     {
//         int mid=l+r+1>>1;
//         if(qus(mid+1)<qus1(mid))r1=mid-1;
//         else l1=mid;
//     }
//     if(l1==ct[1]-1)
//     {
//         return s2[1]-s1[1];
//     }
//     else
//     {
//         res+=s2[]
//     }
// }
set<long long>x;
int main()
{
    freopen("kte.in","r",stdin);
    freopen("kte.out","w",stdout);
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    cin>>n;
    // for(int i=1;i<=n;++i)
    // {
    //     cin>>a[i];num[++cou]=a[i];
    // }
    // sort(num+1,num+1+cou);
    // cou=unique(num+1,num+1+cou);
    // for(int i=1;i<=n;++i)
    // {
    //     cg(lower_bound(num+1,num+cou+1,a[i]));
    //     cout<<solve()<<"\n";
    // }
    long long x;
    for(int i=1;i<=n;++i)
    {
        cin>>x;
        if(s.count(x))s.erase(x);
        else s.insert(x);
        if(s.size()<=1){cout<<"0\n";continue;}
        auto it=s.begin(),itt=s.end();itt--;
        long long ans=0,l=0,r=0;
        while(1)
        {
            long long las=r;
            l+=*it,r+=*itt;
            ans+=(r-max(l,las));
            if(itt=s.begin())break;
            it++,itt--;
        }
        cout<<ans<<"\n";
    }
    return 0;
}